const path = require('path')
const CompressionPlugin = require('compression-webpack-plugin')
const webpack = require('webpack')
function resolve(dir) {
  return path.join(__dirname, dir)
}

// vue.config.js
module.exports = {
  /*
    Vue-cli3:
    Crashed when using Webpack `import()` #2463
    https://github.com/vuejs/vue-cli/issues/2463
   */
  // 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,
  //qiankuan打包时放开
  //outputDir: "../dist/main",
  // 多入口配置
  // pages: {
  //   index: {
  //     entry: 'src/main.js',
  //     template: 'public/index.html',
  //     filename: 'index.html',
  //   }
  // },
  // 打包app时放开该配置
  // publicPath:'./',
  configureWebpack: config => {
    // 生产环境取消 console.log
    if (process.env.NODE_ENV === 'production') {
      config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
    }
  },
  chainWebpack: config => {
    config.resolve.alias
      .set('@$', resolve('src'))
      .set('@api', resolve('src/api'))
      .set('@assets', resolve('src/assets'))
      .set('@comp', resolve('src/components'))
      .set('@views', resolve('src/views'))
    if (process.env.NODE_ENV === 'production') {
      config.optimization.splitChunks({
        chunks: 'all',
        cacheGroups: {
          libs: {
            name: 'chunk-libs',
            test: /[\\/]node_modules[\\/]/,
            priority: 10,
            chunks: 'initial'
          },
          antdv: {
            name: 'chunk-antdv',
            priority: 40,
            maxSize: 3500,
            test: /[\\/]node_modules[\\/](ant-design-vue)[\\/]/
          },
          moment: {
            name: 'chunk-moment',
            priority: 31,
            test: /[\\/]node_modules[\\/](moment)[\\/]/
          },
          antdvicons: {
            name: 'chunk-antdvicons',
            priority: 20,
            test: /[\\/]node_modules[\\/](@ant-design)[\\/]/
          },
          tinymce: {
            name: 'chunk-tinymce',
            priority: 41,
            maxSize: 2000,
            test: /[\\/]node_modules[\\/](tinymce)[\\/]/
          },
          antv: {
            name: 'chunk-antv',
            priority: 20,
            // maxSize: 5000,
            test: /[\\/]node_modules[\\/](@antv)[\\/]/
          },
          commons: {
            name: 'chunk-commons',
            test: resolve('src/components'),
            minChunks: 3,
            priority: 5,
            reuseExistingChunk: true
          }
        }
      })
      config.optimization.runtimeChunk('single')
    }
    // 生产环境，开启js\css压缩
    // if (process.env.NODE_ENV === 'production') {
    // config.plugin('compressionPlugin').use(
    //   new CompressionPlugin({
    //     test: /\.(js|css|less)$/, // 匹配文件名
    //     threshold: 10240, // 对超过10k的数据压缩
    //     deleteOriginalAssets: false, // 不删除源文件
    //     exclude: [/[\\/]node_modules[\\/]_?ant-design-vue(.*)/]
    //   })
    // )
    // }

    // 配置 webpack 识别 markdown 为普通的文件
    config.module
      .rule('markdown')
      .test(/\.md$/)
      .use()
      .loader('file-loader')
      .end()

    // 编译vxe-table包里的es6代码，解决IE11兼容问题
    config.module
      .rule('vxe')
      .test(/\.js$/)
      .include.add(resolve('node_modules/vxe-table'))
      .add(resolve('node_modules/vxe-table-plugin-antd'))
      .end()
      .use()
      .loader('babel-loader')
      .end()
    // config.plugin('ignore').use(new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/))
    // config.plugin('ignore').use(new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/))
  },

  css: {
    loaderOptions: {
      less: {
        modifyVars: {
          /* less 变量覆盖，用于自定义 ant design 主题 */
          'primary-color': '#1890FF',
          'link-color': '#1890FF',
          'border-radius-base': '4px'
        },
        javascriptEnabled: true
      }
    }
  },

  devServer: {
    port: 3000,

    proxy: {
      /** '/api': {
        target: 'https://mock.ihx.me/mock/5baf3052f7da7e07e04a5116/antd-pro', //mock API接口系统
        ws: false,
        changeOrigin: true,
        pathRewrite: {
          '/jeecg-boot': ''  //默认所有请求都加了jeecg-boot前缀，需要去掉
        }
      },**/
      '/': {
        // target: 'http://localhost:6600', // 请求本地 需要jeecg-boot后台项目
        target: 'http://10.55.21.173:9900', //
        // target: 'http://10.55.21.179:9002',
        // target: 'http://10.55.21.179:9900/auth',
        // target: 'http://localhost:9900/auth',
        // target: 'http://192.168.31.85:6600/auth',
        ws: false,
        changeOrigin: true, // 是否允许跨越
        pathRewrite: {
          '^/desform': '/datapipeline/desform',
          '^/online': '/datapipeline/online',
          '^/act': '/datapipeline/act',
          '^/bpm': '/datapipeline/bpm',
          '^/eoa': '/datapipeline/eoa',
          '^/joa': '/datapipeline/joa',
          '^/jmreport': '/datapipeline/jmreport',
          '^/plug-in': '/datapipeline/plug-in',
          '^/datasource': '/datapipeline/datasource',
          '^/desflow': '/datapipeline/desflow',
          '^/bigscreen': '/datapipeline/bigscreen'
        }
      }
    }
  },
  lintOnSave: false
}
